﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using Sistema.WF.Componentes;
using Sistema.Dominio;
using Sistema.Kernel;
using Sistema.Util;


namespace Sistema.WF.View.Kernel
{
    public partial class FRM_login : Form
    {
        private LoginVO _loginVO;
        private Usuario _usuario;
        private UsuarioInfo _usuarioInfo;


        public FRM_login()
        {

            InitializeComponent();

            _loginVO = new LoginVO();
            _usuario = new Usuario();
            _usuarioInfo = new UsuarioInfo();
            this.ShowDialog();

        }

        private void FRM_login_Load(object sender, EventArgs e)
        {
            var ambiente =  (Sistema.NFe.TipoAmbiente) new System.Configuration.AppSettingsReader().GetValue("TipoAmbiente",typeof(Int32));
            LBL_ambiente.Text = " Em "+ambiente.ToString();
            this.setFocus();

        }

        private void LBL_sair_Click(object sender, EventArgs e)
        {
            this.Close();
            this.Dispose();
        }

        private void RecolheDadosTela()
        {
            _loginVO.Login = TXT_login.Text;
            _loginVO.Senha = TXT_senha.Text;

        }
        private UsuarioInfo Logar()
        {
            try
            {
                System.Tuple<bool, UsuarioInfo> retorno;
                UsuarioInfo usuario;
                retorno = _usuario.Logar(_loginVO);

                if (retorno.Item1)
                {
                    this.Close();
                    usuario = retorno.Item2;
                    
                }
                else
                {
                    MessageBox.Show(this, "Login não encontrado no sistema.", "Login", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);   
                    this.setFocus();
                    usuario = null;
                }
                return usuario; 

            }
            catch (SistemaException ex)
            {
                throw ex;
            }

        }
        private void setFocus()
        {
            TXT_login.Focus();
        }

        private void LBL_entrar_Click(object sender, EventArgs e)
        {
            this.RecolheDadosTela();
            _usuarioInfo = this.Logar();
        }

        public UsuarioInfo Login()
        {
            return _usuarioInfo;            
        }




    }
}
